﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using XQ.RequestOfficeSupplies.BLL.Common;
using XQ.RequestOfficeSupplies.DAL;
using XQ.RequestOfficeSupplies.DAL.DAL.Business;

namespace XQ.RequestOfficeSupplies.AutoService
{
    public partial class Service1 : ServiceBase
    {

        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            // 初始化定时器  
            // 假设我们想要在每天的10:30:00执行某个方法  
            DateTime targetTime = DateTime.Today.AddHours(10).AddMinutes(30).AddSeconds(0);

            // 如果目标时间已经过去，则计算到明天的目标时间  
            if (targetTime < DateTime.Now)
            {
                targetTime = targetTime.AddDays(1);
            }
            // 计算需要等待的时间  
            TimeSpan waitTime = targetTime - DateTime.Now;

            // 使用Task.Delay来等待，并在等待后执行方法  
            Task.Delay(waitTime).ContinueWith(t =>
            {
                // 检查任务是否因为异常而被取消  
                if (!t.IsFaulted && !t.IsCanceled)
                {
                    //List<ProjectInfo> needSendMsgs = new List<ProjectInfo>();
                    //List<ProjectInfo> projects = projectDal.FindAllModel(p => p.isExamine == null).ToList();
                    //DateTime curTime = DateTime.Now;
                    //foreach (ProjectInfo p in projects)
                    //{
                    //    TimeSpan timeSpan = curTime - (DateTime)p.addTime;
                    //    if (timeSpan.Days == 15 || timeSpan.Days == 30)
                    //    {
                    //        needSendMsgs.Add(p);
                    //    }
                    //}

                    ////发送短信
                    //foreach (ProjectInfo p in needSendMsgs)
                    //{
                    //    QiXinTongHelper.SendSMS(signStr + "您单位申报的小零工程(" + p.projectName + ")还未审核，请及时联系监管单位审核！", p.ownerUnitPhone);
                    //}
                    
                }
                else
                {
                    // 处理异常或取消的逻辑（如果需要）  
                }
            });

            // 注意：由于Task.Delay是异步的，OnStart方法会立即返回。  
            // 如果服务需要在等待期间保持运行状态，你可能需要添加额外的逻辑来确保服务不会意外停止。
        }


        protected override void OnStop()
        {

        }
    }
}
